<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>synopsis - Work framework Manual &amp; Documentation</title>
  <link rel="stylesheet" href="assets/style.css">
  <link rel="stylesheet" href="assets/sh.css">
  <script src="assets/sh.js"></script>
  <script src="assets/sh.php.js"></script>
</head>
<body onload="sh_highlightDocument();">

  <div id="container">
      <h1>Work framework 手册 &amp; 快速指南</h1>
      <div id="gtoc">
        <p><a href="index.html">索引</a> | <a href="all.html">查看所有</a></p>
      </div>
      <hr>
    <div id="toc">
        <h2>目录内容表</h2>
        <ul>
            <li><a href="#synopsis">简介</a></li>
        </ul>
        <hr />
    </div>
<h2 id="synopsis">简介</h2>

<p>
Work framework php框架是针对<a href="http://doitphp.com">Doitphp</a>的诸多修改而来的，在Doit基础上增加了Config类，Request类，以及Component类，和更强的View类
这些类的作用我们会在后面告诉大家功能和使用方法！
</p>

<h3>变量调节标签</h3>

<h6>escape [编码]</h6>

No 	html,url,quotes html 使用何种编码格式。
用于html转码,url转码,在没有转码的变量上转换单引号,十六进制转码,十六进制美化转码。
默认是html转码。

<h6>例子：</h6>

<pre class="sh_php">
{$articleTitle} 
{$articleTitle|escape} 
{$articleTitle|escape:"html"}    
{* escapes& " ' <> *} 
{$articleTitle|escape:"url"}
{$articleTitle|escape:"quotes"} 
</pre>

<h6>nl2br [换行符替换成&lt;br /&gt;]</h6>

所有的换行符将被替换成, 功能同PHP中的nl2br()函数一样。

<h6>例子：</h6>

<pre class="sh_php">
{$articleTitle|nl2br} 

输出： 
Sun or rain expectedtoday, dark tonight 
</pre>

<h6>default [默认值]</h6>

<h6>描述： </h6>
 
当变量为空或者未分配的时候,将由给定的默认值替代输出。 

<h6>例子：</h6>
<pre class="sh_php">
{$articleTitle|default:"no title"} 
{$myTitle|default:"no title"} 

输出： 
Dealers Will Hear Car Talk at Noon. 
no title 
</pre>
 
<h6>truncate [截取] </h6>

从字符串开始处截取某长度的字符.默认是80个. 
你也可以指定第二个参数作为追加在截取字符串后面的文本字串.该追加字串被计算在截取长
度中。 
默认情况下,smarty会截取到一个词的末尾。 
如果你想要精确的截取多少个字符,把第三个参数改为"true" 

<h6>例子： </h6>
<pre class="sh_php">
{$articleTitle} 
{$articleTitle|truncate} 
{$articleTitle|truncate:30} 
{$articleTitle|truncate:30:""} 
{$articleTitle|truncate:30:"---"} 
{$articleTitle|truncate:30:"":true} 
{$articleTitle|truncate:30:"...":true} 

输出： 
Two Sisters Reunite after Eighteen Years at Checkout Counter. 
Two Sisters Reunite after Eighteen Years at Checkout Counter. 
Two Sisters Reunite after... 
Two Sisters Reunite after 
Two Sisters Reunite after--- 
Two Sisters Reunite after Eigh 
Two Sisters Reunite after E... 
</pre>

<h6>strip_tags [去除html标签 ] </h6>

去除<和>标签,包括在<和>之间的任何内容

<h6>例子： </h6>
<pre class="sh_php">
{$articleTitle} 
{$articleTitle|strip_tags} 
输出： 
Blind Woman Gets <font face="helvetica">New Kidney</font> from Dad she Hasn't 
Seen in <b>years</b>. 
Blind Woman Gets New Kidney from Dad she Hasn't Seen in years. 
</pre>

<h3>判断标签 - if</h3>
if 语句和 php&nbsp; 中的 if 语句一样灵活易用，并增加了几个特性以适宜模板引擎. if
必须于 /if 成对出现. 可以使用 else 和 elseif 子句. 可以使用以下条件修饰词：eq、ne、
neq、gt、lt、lte、le、gte、ge、is even、is odd、is not even、is not odd、not、mod、
div by、even&nbsp; by、odd&nbsp; by、==、!=、&gt;、&lt;、&lt;=、&gt;=. 使用这些修饰词时必须和变量或常量用
空格格开.

<h6>例如：</h6>

<pre class="sh_php">
{if $name&nbsp; eq &quot;Fred&quot;}
Welcome Sir.
{elseif $name&nbsp; eq &quot;Wilma&quot;}
Welcome Ma'am.
{else}
Welcome, whatever you are.
{/if}

{* an example with &quot;or&quot; logic *}
{if $name&nbsp; eq &quot;Fred&quot; or $name&nbsp; eq &quot;Wilma&quot;}
...
{/if}

{* same as above&nbsp; *}
{if $name&nbsp; == &quot;Fred&quot; || $name&nbsp; == &quot;Wilma&quot;}
...
{/if}

{* the following syntax&nbsp; will NOT&nbsp; work, conditional
qualifiers must be separated from&nbsp; surrounding elements by spaces *}
{if $name==&quot;Fred&quot; || $name==&quot;Wilma&quot;}
...
{/if}


{* parenthesis are allowed *}
{if ( $amount &lt; 0 or $amount &gt; 1000 ) and $volume &gt;= #minVolAmt#}
...
{/if}

{* you can also embed&nbsp; php&nbsp; function calls *}
{if count($var) gt 0}
...
{/if}

{* test if values are even or odd *}
{if $var&nbsp; is even}
...
{/if}
{if $var&nbsp; is odd}
...
{/if}
{if $var&nbsp; is not odd}
...
{/if}

{* test if var is divisible by 4 *}
{if $var&nbsp; is div by 4}
...
{/if}

{* test if var is even, grouped by two. i.e.,
0=even, 1=even, 2=odd, 3=odd, 4=even, 5=even, etc. *}
{if $var&nbsp; is even by 2}
...
{/if}

{* 0=even, 1=even, 2=even, 3=odd, 4=odd, 5=odd, etc. *}
{if $var&nbsp; is even by 3}
...
{/if}
</pre>


<h3>循环标签 - foreach </h3>

<table>
 <tr>
    <td>属性</td>
    <td>类</td>
    <td>是否必须</td>
    <td>缺省值</td>
    <td>描述</td>
 </tr>

 <tr>
  <td>from</td>
  <td>string</td>
  <td>Yes</td>
  <td>n/a</td>
  <td>待循环数组的名称</td>
 </tr>

 <tr>
  <td>item</td>
  <td>string</td>
  <td>Yes</td>
  <td>n/a</td>
  <td>当前处理元素的变量名称</td>
 </tr>

 <tr>
  <td>key</td>
  <td>string</td>
  <td>No</td>
  <td>n/a </td>
  <td>当前处理元素的键名</td>
 </tr>

 <tr>
  <td>name</td>
  <td>string</td>
  <td>No</td>
  <td>n/a</td>
  <td>该循环的名称，用于访问该循环</td>
 </tr>
</table>

foreach&nbsp; 是除 section 之外处理循环的另一种方案(根据不同需要选择不同的方案).<br>
foreach&nbsp; 用于处理简单数组(数组中的元素的类型一致)，它的格式比
section 简单许多，缺点<br>
是只能处理简单数组.<br>
foreach&nbsp; 必须和 /foreach 成对使用，且必须指定&nbsp; from&nbsp; 和 item 属性.<br>
name 属性可以任意指定(字母、数字和下划线的组合).<br>
foreach&nbsp; 可以嵌套，但必须保证嵌套中的
foreach&nbsp; 名称唯一.<br>
from&nbsp; 属性(通常是数组)决定循环的次数.<br>
foreachelse 语句在 from&nbsp; 变量没有值的时候被执行.</p>

<h6>例子1：</h6>

<pre class="sh_php">
{* 该例将输出数组 $custid 中的所有元素的值 *}
{foreach from=$custid item=curr_id}
id: {$curr_id}
{/foreach}

输出：
id: 1000
id: 1001
id: 1002
</pre>

<h6>例子2:</h6>

<pre class="sh_php">
{* The key contains the key for each looped value *}

{* assignment looks like this: *}

$smarty-&gt;assign(&quot;contacts&quot;,
array(array(&quot;phone&quot; =&gt; &quot;1&quot;, &quot;fax&quot; =&gt;
&quot;2&quot;, &quot;cell&quot; =&gt; &quot;3&quot;), array(&quot;phone&quot;
=&gt; &quot;555-4444&quot;, &quot;fax&quot; =&gt; &quot;555-3333&quot;,
&quot;cell&quot; =&gt; &quot;760-1234&quot;)));

{* 键就是数组的下标，请参看关于数组的解释 *}
</pre>

<pre class="sh_php">
{foreach name=outer item=contact from=$contacts}

{foreach key=key item=item from=$contact}
{$key}: {$item}
{/foreach}
{/foreach}

输出：
phone: 1
fax: 2
cell: 3
phone: 555-4444
fax: 555-3333
cell: 760-1234
</pre>

<h3>显示标签 - Cycle</h3>

<table>
 <tr>
    <td>属性</td>
    <td>类</td>
    <td>是否必须</td>
    <td>缺省值</td>
    <td>描述</td>
 </tr>

 <tr>
  <td>name </td>
  <td>string</td>
  <td>No </td>
  <td>default </td>
  <td>轮转的名称</td>
 </tr>

 <tr>
  <td>values </td>
  <td>mixed </td>
  <td>Yes </td>
  <td>n/a</td>
  <td>待轮转的值，可以是用逗号分隔的列表(请查看 delimiter 属性)或一个包含多值的数组. </td>
 </tr>

 <tr>
  <td>print </td>
  <td>boolean  </td>
  <td>No</td>
  <td>true  </td>
  <td>是否输出值 </td>
 </tr>

 <tr>
  <td>advance </td>
  <td>boolean  </td>
  <td>No</td>
  <td>true </td>
  <td>是否使用下一个值(为 false 时使用当前值) </td>
 </tr>

 <tr>
  <td>delimiter   </td>
  <td>string   </td>
  <td>No</td>
  <td>, </td>
  <td>指出values 属性中使用的分隔符，默认是逗号. </td>
 </tr>

  <tr>
  <td>assign   </td>
  <td>string    </td>
  <td>No </td>
  <td>n/a</td>
  <td>输出值将被赋给模板变量的名称 </td>
 </tr>
</table>
 
Cycle 用于轮转使用一组值. 该特性使得在表格中交替输出颜色或轮转使用数组中的值变得很<br />
容易. 
如果需要在模板中使用多个轮转，需要给出唯一的 name 属性. <br />
用户可以设置 print 属性为 false 强制不输出当前值. 该特性可以很方便地略过某个值. 
advance 属性用于重复使用某个值. 当该属性设置为 false 时，下次调用该轮转时将输出同样
的值. <br />
如果指定了 "assign" 这个特殊属性，该轮转的输出值将被赋给由 assign 指定的模板变量，而
不是直接输出. <br />

<h6>例子： </h6>

<pre class="sh_php">
{section name=rows loop=$data} 
&lt;tr bgcolor="{cycle values="#eeeeee, #d0d0d0"}"&gt; 
&lt;td&gt;{$data[rows]}&lt;/td&gt;
&lt;/tr&gt;
{/section}

输出： 
&lt;tr bgcolor="#eeeeee"&gt;
&lt;td&gt;1&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr bgcolor="#d0d0d0"&gt;
&lt;td&gt;2&lt;/td&gt; 
&lt;/tr&gt; 
&lt;tr bgcolor="#eeeeee"&gt; 
&lt;td&gt;3&lt;/td&gt; 
&lt;/tr&gt;
</pre>

<h3>辅助标签 - assign </h3>

assign 用于在模板被执行时为模板变量赋值。

<h6>例子： </h6>
<pre class="sh_php">
{assign var="name" value="Bob"} 
输出： 
The value of $name is Bob. 
</pre>

<h3>Include </h3>

<table>
 <tr>
    <td>属性</td>
    <td>类</td>
    <td>是否必须</td>
    <td>缺省值</td>
    <td>描述</td>
 </tr>

 <tr>
  <td>file </td>
  <td>string</td>
  <td>Yes</td>
  <td>n/a</td>
  <td> 待包含的模板文件名 </td>
 </tr>

 <tr>
  <td>assign  </td>
  <td>string</td>
  <td>Yes</td>
  <td>n/a</td>
  <td> 该属性指定一个变量保存待包含模板的输出 </td>
 </tr>

 <tr>
  <td>[var ...]</td>
  <td>[var type]</td>
  <td>No</td>
  <td>n/a </td>
  <td>传递给待包含模板的本地参数，只在待包含模板中有效</td>
 </tr>
</table>

Include 标签用于在当前模板中包含其它模板. 当前模板中的变量在被包含的模板中可用. 必须
指定 file 属性，该属性指明模板资源的位置. 
如果设置了 assign 属性，该属性对应的变量名用于保存待包含模板的输出，这样待包含模板
的输出就不会直接显示了。 

<h6>例子1：</h6>
<pre class="sh_php">
{include file="header"} 
{* body of template goes here *} 
{include file="footer"} 
</pre>

可以在属性中传递参数给待包含模板. 传递给待包含模板的参数只在待包含模板中可见. 如果传
递的参数在待包含模板中有同名变量，那么该变量被传递的参数替代. 

<h6>例子2：</h6> 
<pre class="sh_php">
{include file="header" title="Main Menu" table_bgcolor="#c0c0c0"} 
{* body of template goes here *}
{include file="footer.tpl" logo="http://my.domain.com/logo.gif"} 
</pre>

<h6>例子3： </h6>
<pre class="sh_php">
{* absolute filepath *} 

{include file="/usr/local/include/templates/header"} 

{* absolute filepath (same thing) *} 
{include file="file:/usr/local/include/templates/header"} 

{* windows absolute filepath (MUST use "file:" prefix) *} 
{include file="file:C:/www/pub/templates/header"} 

{* include from template resource named "db" *} 
{include file="db:header"} 
</pre>

</div>

</body>
</html>
